<?php

namespace app\common\model;


use think\Model;

/**
 * 计划任务模型
 * Class scheduledTasks
 * @property int $id 任务ID
 * @property int $site_id 站点ID,默认0
 * @property string $name 任务名称
 * @property string $title 任务标题
 * @property string $cron 执行时间，cron表达式
 * @property string $class_name 执行类名
 * @property array $params 执行参数
 * @property int $lately_run_time 上次执行时间
 * @property int $next_run_time 下次执行时间
 * @property int $status 状态，0禁用，1启用
 * @property int $create_time 创建时间
 * @property int $update_time 更新时间
 */
class ScheduledTasks extends Model
{

    protected $name = 'scheduled_tasks';


    protected $json = ['params'];


    protected $updateTime = false;


    // 设置JSON数据返回数组
    protected $jsonAssoc = true;


    // 附加字段
    protected $append = [
        'status_text',
        'cron_text',
        'run_status'
    ];


    /**
     * 状态
     * @param $value
     * @param $data
     * @return string
     */
    public function getStatusTextAttr($value, $data)
    {
        $status = [
            0 => '禁用',
            1 => '启用'
        ];
        return $status[$data['status']];
    }


    /**
     * cron表达式
     * @param $value
     * @param $data
     * @return string
     */
    public function getCronTextAttr($value, $data)
    {
        return parseCronExpression($data['cron'] ?? '');
    }


    /**
     * 运行状态，返回true表示状态正常，否则返回false
     * @param $value
     * @param $data
     * @return bool
     */
    public function getRunStatusAttr($value, $data)
    {
        $next_run_time = $data['next_run_time'] ?? 0;
        $now_time = time();
        return $next_run_time > $now_time;
    }



}